using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.Serialization;

namespace WcfService1.DTO
{
    [DataContract]
    public class MutasiPalletDTO : INotifyPropertyChanged
    {
        private String _Description;
        private PalletDTO _FromPallet;
        private ObservableCollection<MutasiPalletDetailDTO> _MutasiPalletDetails;
        private int _No;
        private String _NoMutasi;


        private DateTime? _TglMutasi;
        private PalletDTO _ToPallet;
        private WarehouseDTO _Warehouse;
        private String _created_by;
        private DateTime? _created_date;
        private String _modified_by;
        private DateTime? _modified_date;

        public MutasiPalletDTO()
        {
            TglMutasi = DateTime.Now.Date;
        }

        [DataMember]
        public String NoMutasi
        {
            get { return _NoMutasi; }
            set
            {
                _NoMutasi = value;
                RaisePropertyChanged("NoMutasi");
            }
        }

        [DataMember]
        public DateTime? TglMutasi
        {
            get { return _TglMutasi; }
            set
            {
                _TglMutasi = value;
                RaisePropertyChanged("TglMutasi");
            }
        }


        [DataMember]
        public PalletDTO FromPallet
        {
            get { return _FromPallet; }
            set
            {
                _FromPallet = value;
                RaisePropertyChanged("FromPallet");
            }
        }


        [DataMember]
        public PalletDTO ToPallet
        {
            get { return _ToPallet; }
            set
            {
                _ToPallet = value;
                RaisePropertyChanged("ToPallet");
            }
        }


        [DataMember]
        public String Description
        {
            get { return _Description; }
            set
            {
                _Description = value;
                RaisePropertyChanged("Description");
            }
        }


        [DataMember]
        public ObservableCollection<MutasiPalletDetailDTO> MutasiPalletDetails
        {
            get { return _MutasiPalletDetails; }
            set
            {
                _MutasiPalletDetails = value;
                RaisePropertyChanged("MutasiPalletDetails");
            }
        }


        [DataMember]
        public String created_by
        {
            get { return _created_by; }
            set
            {
                _created_by = value;
                RaisePropertyChanged("created_by");
            }
        }


        [DataMember]
        public DateTime? created_date
        {
            get { return _created_date; }
            set
            {
                _created_date = value;
                RaisePropertyChanged("created_date");
            }
        }

        [DataMember]
        public String modified_by
        {
            get { return _modified_by; }
            set
            {
                _modified_by = value;
                RaisePropertyChanged("modified_by");
            }
        }


        [DataMember]
        public DateTime? modified_date
        {
            get { return _modified_date; }
            set
            {
                _modified_date = value;
                RaisePropertyChanged("modified_date");
            }
        }

        [DataMember]
        public WarehouseDTO Warehouse
        {
            get { return _Warehouse; }
            set
            {
                _Warehouse = value;
                RaisePropertyChanged("Warehouse");
            }
        }

        public int No
        {
            get { return _No; }
            set
            {
                _No = value;
                RaisePropertyChanged("No");
            }
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion

        protected void RaisePropertyChanged(string propertyname)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyname));
        }
    }
}